// ==UserScript==
// @name         AutoCopy m3u8
// @namespace    https://gitee.com/vee7z/m3u8downloader
// @version      0.1
// @description  进入网页后自动获取并复制所有 m3u8 的请求网址到剪贴板,搭配m3u8downloader实现半自动人工爬虫
// @author       Vee7
// @match        *://*/*
// @run-at       document-start
// @grant        GM_setClipboard
// ==/UserScript==

(function() {
    'use strict';
    document.querySelectorAll('a').forEach(function(link) {
        link.setAttribute('target', '_blank');
    });
        // 拦截 XMLHttpRequest 请求
    const originalOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url) {
        if (url.includes('index.m3u8')) {
            console.log('捕获到 m3u8 请求：', url);
            // 获取页面中的 <h1> 标签内容
            const title = getPageTitle();
            const finalText = `${url} ${title}`;
            // 弹出提示让用户点击触发复制
            alert("捕获到 m3u8 请求，点击确定以复制地址和标题到剪切板！");
            copyToClipboard(finalText);
        }
        return originalOpen.apply(this, arguments);
    };

    // 拦截 Fetch 请求
    const originalFetch = window.fetch;
    window.fetch = function(url, options) {
        if (url.includes('index.m3u8')) {
            // 获取页面中的 <h1> 标签内容
            const title = getPageTitle();
            const finalText = `${url} ${title}`;
            // 弹出提示让用户点击触发复制
            alert("捕获到 m3u8 请求（fetch），点击确定以复制地址和标题到剪切板！");
            console.log(finalText)
            copyToClipboard(finalText);
        }
        return originalFetch.apply(this, arguments);
    };

    // 获取页面中的 <h1> 标签内容
    function getPageTitle() {
        const titleElement = document.querySelector('.vod-header h1');
        return titleElement ? titleElement.textContent.replace(/\s+/g, '') : '';
    }

    // 复制文本到剪切板
    function copyToClipboard(text) {
        navigator.clipboard.writeText(text)
            .then(() => {
                console.log('已成功复制到剪切板：', text);
            })
            .catch(err => {
                console.error('复制到剪切板失败：', err);
            });
    }
})();